package com.hospital.drug.drugzhou.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hospital.drug.drugzhou.dao.DrugMapper;
import com.hospital.drug.drugzhou.entity.Drug;
import com.hospital.drug.drugzhou.service.DrugService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @description：
 * @author：zou
 * @date：2021/9/7 16:55
 * @versions：v1.0
 */
@Service
public class DrugImplService implements DrugService {

    @Autowired
    private DrugMapper drugMapper;

    /**
     * 查询所有药品
     *
     * @return 药品编号、名称
     */
    @Override
    public List<Drug> drugs() {
        //条件构造器
        QueryWrapper<Drug> wrapper = new QueryWrapper<>();
        wrapper.select("id", "drugname");
        //查询所有药品
        return drugMapper.selectList(wrapper);
    }

    /**
     * 检查库存
     *
     * @return 药品编号、名称、数量
     */
    @Override
    public List<Drug> drugList() {
        //条件构造器
        QueryWrapper<Drug> wrapper = new QueryWrapper<>();
        wrapper.select("id", "drugname", "count").lt("count", 100);
        //查询所有药品
        return drugMapper.selectList(wrapper);
    }

    /**
     * 修改药品属性
     *
     * @param drugId    药品编号
     * @param drugField 药品字段
     * @param value     字段属性
     * @return true 修改成功
     */
    @Override
    public boolean updDrug(int drugId, String drugField, String value) {
        return drugMapper.updDrug(drugId, drugField, value) == 1;
    }


    /**
     * 查询药品  分页
     *
     * @param drugName    药品名称
     * @param drugType    药品类型
     * @param pageSize    页大小
     * @param currentPage 页码
     * @return json对象
     */
    @Override
    public JSONObject selPage(String drugName, int drugType, int pageSize, int currentPage) {

        JSONObject jsOb = new JSONObject();  //JSONObject json对象

        jsOb.put("code", 0);  //添加状态码code

        jsOb.put("msg", "");  //添加错误提示msg

        if (drugName == null || drugName.equals("")) {  //药品名称的空值处理
            drugName = "";
        }

        QueryWrapper<Drug> countWrapper = new QueryWrapper<>();  //条件查询器
        countWrapper.select("1");
        if (drugType == 0) {
            countWrapper.like("drugName", drugName);
        } else {
            countWrapper.like("drugName", drugName).eq("type", drugType);
        }

        int count = drugMapper.selectCount(countWrapper);  //根据药品名称和药品类型查询记录数

        jsOb.put("count", count);  //添加记录数

        int start = (currentPage - 1) * pageSize;  //计算起始下标

        List<Drug> drugList = drugMapper.drugList(drugName, drugType, start, pageSize);  //获得分页数据

        jsOb.put("data", JSON.toJSON(drugList));  //添加数据 data JSON.toJSON(list);

        return jsOb;  //返回jsonObject对象
    }

}
